package com.summer.filesync.model.manager;

import java.time.LocalDateTime;
import java.util.List;

/** 文件搜索条件 */
public class FileSearchCriteria {
  private String namePattern;
  private String contentKeywords;
  private String fileExtension;
  private List<String> fileExtensions;
  private Long minSize;
  private Long maxSize;
  private LocalDateTime createdAfter;
  private LocalDateTime createdBefore;
  private LocalDateTime modifiedAfter;
  private LocalDateTime modifiedBefore;
  private String directoryPath;
  private List<String> searchPaths;
  private boolean includeSubdirectories;
  private boolean caseSensitive;
  private boolean useRegex;
  private int maxResults;
  private SearchSortBy sortBy;
  private boolean sortDescending;

  // Getters and Setters
  public String getNamePattern() {
    return namePattern;
  }

  public void setNamePattern(String namePattern) {
    this.namePattern = namePattern;
  }

  // 为了兼容性，添加 getName 方法
  public String getName() {
    return namePattern;
  }

  public void setName(String name) {
    this.namePattern = name;
  }

  public String getContentKeywords() {
    return contentKeywords;
  }

  public void setContentKeywords(String contentKeywords) {
    this.contentKeywords = contentKeywords;
  }

  public String getFileExtension() {
    return fileExtension;
  }

  public void setFileExtension(String fileExtension) {
    this.fileExtension = fileExtension;
  }

  public List<String> getFileExtensions() {
    return fileExtensions;
  }

  public void setFileExtensions(List<String> fileExtensions) {
    this.fileExtensions = fileExtensions;
  }

  public Long getMinSize() {
    return minSize;
  }

  public void setMinSize(Long minSize) {
    this.minSize = minSize;
  }

  public Long getMaxSize() {
    return maxSize;
  }

  public void setMaxSize(Long maxSize) {
    this.maxSize = maxSize;
  }

  public LocalDateTime getCreatedAfter() {
    return createdAfter;
  }

  public void setCreatedAfter(LocalDateTime createdAfter) {
    this.createdAfter = createdAfter;
  }

  public LocalDateTime getCreatedBefore() {
    return createdBefore;
  }

  public void setCreatedBefore(LocalDateTime createdBefore) {
    this.createdBefore = createdBefore;
  }

  public LocalDateTime getModifiedAfter() {
    return modifiedAfter;
  }

  public void setModifiedAfter(LocalDateTime modifiedAfter) {
    this.modifiedAfter = modifiedAfter;
  }

  public LocalDateTime getModifiedBefore() {
    return modifiedBefore;
  }

  public void setModifiedBefore(LocalDateTime modifiedBefore) {
    this.modifiedBefore = modifiedBefore;
  }

  public String getDirectoryPath() {
    return directoryPath;
  }

  public void setDirectoryPath(String directoryPath) {
    this.directoryPath = directoryPath;
  }

  public List<String> getSearchPaths() {
    return searchPaths;
  }

  public void setSearchPaths(List<String> searchPaths) {
    this.searchPaths = searchPaths;
  }

  public boolean isIncludeSubdirectories() {
    return includeSubdirectories;
  }

  public void setIncludeSubdirectories(boolean includeSubdirectories) {
    this.includeSubdirectories = includeSubdirectories;
  }

  public boolean isCaseSensitive() {
    return caseSensitive;
  }

  public void setCaseSensitive(boolean caseSensitive) {
    this.caseSensitive = caseSensitive;
  }

  public boolean isUseRegex() {
    return useRegex;
  }

  public void setUseRegex(boolean useRegex) {
    this.useRegex = useRegex;
  }

  public int getMaxResults() {
    return maxResults;
  }

  public void setMaxResults(int maxResults) {
    this.maxResults = maxResults;
  }

  public SearchSortBy getSortBy() {
    return sortBy;
  }

  public void setSortBy(SearchSortBy sortBy) {
    this.sortBy = sortBy;
  }

  public boolean isSortDescending() {
    return sortDescending;
  }

  public void setSortDescending(boolean sortDescending) {
    this.sortDescending = sortDescending;
  }
}
